"""
名片管理系统，实现名片的增删改查
"""
import time

# 名片信息
g_cards = []


def print_card_func():
    """打印名片管理系统功能"""
    print("=" * 50)
    print("名片管理系统 v1.0")
    print("1. (INSE)添加一个名片")
    print("2. (DELT)删除一个名片")
    print("3. (MODY)修改一个名片")
    print("4. (FIND)查询一个名片")
    print("5. (LIST)显示所有名片")
    print("6. (WRAN)提示系统功能")
    print("7. (EXIT)退出名片系统")
    print("=" * 50)


def add_card():
    """新增一个名片"""
    name = input("请输入姓名：")
    qq = input("请输入QQ：")
    tel = input("请输入电话：")
    # 名片信息字典
    card = {'name': name, 'qq': qq, 'tel': tel}
    # 添加到名片列表中
    global g_cards
    g_cards.append(card)


def del_card():
    """删除一个名片"""
    name = input("请输入要删除的姓名：")
    # global g_cards 列表和字典可以不用加global声明是全局变量
    find_flag = False
    for card in g_cards:
        if card['name'] == name:
            find_flag = True
            g_cards.remove(card)

    if not find_flag:
        print("没有找到%s的名片信息..." % name)


def mod_card():
    """修改名片信息"""
    name = input("请输入要修改的姓名：")
    global g_cards
    find_flag = False
    for card in g_cards:
        if card['name'] == name:
            find_flag = True
            name = input("请输入新的姓名：")
            qq = input("请输入新的QQ：")
            tel = input("请输入新的电话：")
            card['name'] = name
            card['qq'] = qq
            card['tel'] = tel

    if not find_flag:
        print("没有找到%s的名片信息..." % name)


def find_card():
    """查找一个名片"""
    name = input("请输入要查找的姓名：")
    find_flag = False
    for card in g_cards:
        if card['name'] == name:
            find_flag = True
            print_one_card(card)

    if not find_flag:
        print("没有找到%s的名片信息..." % name)


def list_card():
    """显示所有的名片"""
    if not g_cards:
        print("没有名片信息...")
        return

    # 打印所有名片
    print_all_card()


def exit_sys():
    """退出名片系统"""
    print("正在退出系统...")
    time.sleep(2)
    exit(0)


def print_one_card(card):
    """
    打印一个名片信息
    :param card:名片
    """
    if not card is None:
        print("%s\t%s\t%s\t" % ("姓名", "QQ", "电话"))
        print("%s\t%s\t%s\t" % (card['name'], card['qq'], card['tel']))


def print_all_card():
    """打印所有名片信息"""
    # 打印头部信息
    print("%s\t%s\t%s\t" % ("姓名", "QQ", "电话"))
    for card in g_cards:
        print("%s\t%s\t%s\t" % (card['name'], card['qq'], card['tel']))


def main():
    """入口功能，包含所有的名片管理功能"""
    # 打印提示通过
    print_card_func()
    while True:
        # 异常捕获，防止输入的不是数字
        try:
            opt_num = int(input("请输入操作序号："))
        except Exception:
            print("输入有误，请重新输入...")
            print("")
            continue

        # 功能选择入口
        if opt_num == 1:
            add_card()
        elif opt_num == 2:
            del_card()
        elif opt_num == 3:
            mod_card()
        elif opt_num == 4:
            find_card()
        elif opt_num == 5:
            list_card()
        elif opt_num == 6:
            print_card_func()
        elif opt_num == 7:
            exit_sys()
        else:
            print("输入有误，请重新输入...")
        print("")


if __name__ == "__main__":
    # 入口函数
    main()
